package com.borened.common.core.mybatisplus;

import com.baomidou.mybatisplus.core.enums.SqlKeyword;
import org.springframework.core.annotation.AliasFor;

import java.lang.annotation.*;

/**
 * 用于解析query对象到mybatisplus 动态组装wrapper对象
 *
 * @author: cch
 * @since: 2022/3/2
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MpWrapper {

    /**
     * 对应实体查询条件的列名（如果没有指定该值，则默认使用字段名）
     */
    @AliasFor("value")
    String column() default "";

    /**
     * @see MpWrapper#column()
     */
    @AliasFor("column")
    String value() default "";

    /**
     * 操作类型，=,!=,<=,>=,like,in,not in等等
     * <p>
     * 支持的类型请参考{@link MpQueryWrapper#SUPPORTED_KEYWORDS}
     * </p>
     */
    SqlKeyword operateType();

    /**
     * 拼接sql片段，使用mp的拼接sql占位符模式 {0}，需要防止SQL注入！！！
     * 优先级高于{@link com.borened.common.core.mybatisplus.MpWrapper#operateType()}
     * @return
     */
    String applySql() default "";
}
